/**
 * 文 件 名:  BaseScript.java
 * 工 程 名:  ScriptManager
 * 创建日期:  2015年2月3日 下午4:26:56
 * 创建作者:  杨 强  <281455776@qq.com>
 */
package script.impl;

import java.util.ArrayList;
import java.util.List;

import script.IBaseScript;
import script.IEventScript;
import util.ReflectUtil;

/**
 * 脚本公有父类，通常一个脚本只需要继承该类即可
 * 
 * @author 杨 强
 *
 */
public class BaseScript implements IBaseScript {

    @Override
    public String getName() {
        return getClass().getName();
    }

    @Override
    public List<String> getEventList() {
        List<String> eventList = new ArrayList<String>();
        Class<?>[] interfaces = getClass().getInterfaces();
        for (Class<?> clz : interfaces) {
            // 实现了对应事件接口，则将事件放入到事件列表中
            if (IEventScript.class.isAssignableFrom(clz) && clz != IEventScript.class) {
                eventList.add(clz.getName());
            }
        }
        return eventList;
    }

    @Override
    public void onloadScript() {
    }

    @Override
    public void unloadScript() {
    }

    @Override
    public void reloadScript(IBaseScript oldScript) {
        // 重载时将源脚本中的数据拷贝到新脚本中
        ReflectUtil.copyObjectNoFinalFields(oldScript, this);
    }
}
